package com.ruoyi.system.api.service;

import com.ruoyi.system.api.ResponseWithData;
import com.ruoyi.system.api.domain.StReportPort;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * 报告与备件的关系 （包括服务报告和电话解决报告）Service接口
 * 
 * @author ruoyi
 * @date 2020-03-03
 */
public interface IStReportPortService 
{
    /**
     * 查询报告与备件的关系 （包括服务报告和电话解决报告）
     * 
     * @param id 报告与备件的关系 （包括服务报告和电话解决报告）ID
     * @return 报告与备件的关系 （包括服务报告和电话解决报告）
     */
    public StReportPort selectStReportPortById(Long id);

    /**
     * 查询报告与备件的关系 （包括服务报告和电话解决报告）列表
     * 
     * @param stReportPort 报告与备件的关系 （包括服务报告和电话解决报告）
     * @return 报告与备件的关系 （包括服务报告和电话解决报告）集合
     */
    public List<StReportPort> selectStReportPortList(StReportPort stReportPort);

    /**
     * 新增报告与备件的关系 （包括服务报告和电话解决报告）
     * 
     * @param stReportPort 报告与备件的关系 （包括服务报告和电话解决报告）
     * @return 结果
     */
    public int insertStReportPort(StReportPort stReportPort);

    /**
     * 修改报告与备件的关系 （包括服务报告和电话解决报告）
     * 
     * @param stReportPort 报告与备件的关系 （包括服务报告和电话解决报告）
     * @return 结果
     */
    public int updateStReportPort(StReportPort stReportPort);

    /**
     * 批量删除报告与备件的关系 （包括服务报告和电话解决报告）
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteStReportPortByIds(String ids);

    /**
     * 删除报告与备件的关系 （包括服务报告和电话解决报告）信息
     * 
     * @param id 报告与备件的关系 （包括服务报告和电话解决报告）ID
     * @return 结果
     */
    public int deleteStReportPortById(Long id);

    /**
     *  添加 1、服务报告 2、电话解决报告 3、Error Report 4、Hot Account Report等报告备件信息
     *
     * @param reportPort
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020-03-03 14:00
     */
    public ResponseWithData<?> addReportPort(StReportPort reportPort);

    /**
     *  移除1、服务报告 2、电话解决报告 3、Error Report 4、Hot Account Report等报告备件信息
     *
     * @param enginnerId 工程师ID
     * @param reportPortId 备件表主键ID
     * @return com.ruoyi.system.api.ResponseWithData
     * @author yzg
     * @date 2020-03-03 15:02
     */
    public ResponseWithData<?> removeReportPort(Long enginnerId, Long reportPortId,String pid);

    /**
     *  查询1、服务报告 2、电话解决报告 3、Error Report 4、Hot Account Report等报告备件信息
     *
     * @param serviceNo serviceNo
     * @param helpId 报告辅助id
     * @param type 查询类型 1、服务报告 2、电话解决报告 3、Error Report 4、Hot Account Report
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020-03-03 15:56
     */
    public ResponseWithData<?> selectReportPorts(String serviceNo, String helpId, String type);
    public ResponseWithData<?> selectServiceReportPorts(String serviceNo, String helpId, String type);

    /**
     *  查看备件信息
     *  已完成报告【服务报告或电话解决报告】中的备件信息。
     *
     * @param serviceNo
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020/3/9 2:53 下午
     */
    public ResponseWithData<?> selctcInstallationQualityReportPort(String serviceNo,String helpId,String type);




    /**
     *  查看备件信息
     *  已完成报告【服务报告或电话解决报告】中的备件信息。
     *
     * @param serviceNo
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020/3/9 2:53 下午
     */
    public ResponseWithData<?> selctcInstallationQualityReportPortByInstallation(String serviceNo,String helpId,String type,String reportId);


    public ResponseWithData<?> selctcInstallationQualityReportPortByDel(String serviceNo, String helpId, String type) ;

    /**
     *  添加服务报告备件信息
     *
     * @param reportPort
     * @return com.ruoyi.system.api.ResponseWithData<?>
     * @author yzg
     * @date 2020-03-03 14:00
     */
    public ResponseWithData<?> addFieldServiceReportPort(StReportPort reportPort);

    /**
     *  移除服务报告备件信息
     *
     * @param enginnerId 工程师ID
     * @param reportPortId 备件表主键ID
     * @return com.ruoyi.system.api.ResponseWithData
     * @author yzg
     * @date 2020-03-03 15:02
     */
    public ResponseWithData removeFieldServiceReportPort(Long enginnerId, Long reportPortId);


    /**
     *  移除安装质量服务报告备件信息
     *
     * @p     *
     * @return com.ruoyi.system.api.ResponseWithData
     * @author yzg
     * @date 2020-03-03 15:02
     */
    public int removeReportPortByInstallation (Long enginnerId);

    /**
     *  根据备件序列号查询本地备件使用数量
     *
     * @param partNumber
     * @return com.ruoyi.system.api.ResponseWithData
     * @author yzg
     * @date 2020/4/7 3:23 下午
     */
    public ResponseWithData selectPartQty(String partNumber,String serviceNo,String helpId,String enginnerId) throws Exception;

    /**
     *  根据备件号查询备件单价、备件名称
     *
     * @param partCode	备件号
     * @return com.ruoyi.system.api.ResponseWithData
     * @author yzg
     * @date 2020/4/10 1:43 下午
     */
    public ResponseWithData selectPriceByPartcode(String partCode) throws Exception;

}
